🎖️GitЯра🎖️
.specify/scripts/bash/setup-plan.sh ce1a9fca2b7beae317db6f59d76ebb652ca332f6 (ce1a9fca) Text, 2.35 KB
T8b949e#!/usr/bin/env bash
Tffa657set -e
T8b949e# Parse command line arguments
Te6edf3JSON_MODETff7b72=Tffa657false
Te6edf3ARGSTff7b72=Tff7b72(Tff7b72)
Tff7b72for arg Tff7b72in Ta5d6ff"Te6edf3$@Ta5d6ff"Tb4b4b4; Tff7b72do
Tff7b72case Ta5d6ff"Te6edf3$argTa5d6ff" Tff7b72in
--jsonTff7b72)
Te6edf3JSON_MODETff7b72=Tffa657true
Tb4b4b4;Tb4b4b4;
--helpTb4b4b4|-hTff7b72)
Tffa657echo Ta5d6ff"Ta5d6ffUsage: Te6edf3$0Ta5d6ff [--json]Ta5d6ff"
Tffa657echo Ta5d6ff" --json Output results in JSON format"
Tffa657echo Ta5d6ff" --help Show this help message"
Tffa657exit T79c0ff0
Tb4b4b4;Tb4b4b4;
*Tff7b72)
Te6edf3ARGSTff7b72+=Tff7b72(Ta5d6ff"Te6edf3$argTa5d6ff"Tff7b72)
Tb4b4b4;Tb4b4b4;
Tff7b72esac
Tff7b72done
T8b949e# Get script directory and load common functions
Te6edf3SCRIPT_DIRTff7b72=Ta5d6ff"Tff7b72$(Te6edf3CDPATHTff7b72=Ta5d6ff"" Tffa657cd Ta5d6ff"Tff7b72$(dirname Ta5d6ff"Tffd700${Te6edf3BASH_SOURCETb4b4b4[0]Tffd700}Ta5d6ff"Tff7b72)Ta5d6ff" Tff7b72&& Tffa657pwdTff7b72)Ta5d6ff"
Tffa657source Ta5d6ff"Te6edf3$SCRIPT_DIRTa5d6ff/common.shTa5d6ff"
T8b949e# Get all paths and variables from common functions
Te6edf3_paths_outputTff7b72=Tff7b72$(get_feature_pathsTff7b72) Tff7b72|| Tff7b72{ Tffa657echo Ta5d6ff"ERROR: Failed to resolve feature paths" >Tb4b4b4&T79c0ff2Tb4b4b4; Tffa657exit T79c0ff1Tb4b4b4; Tff7b72}
Tffa657eval Ta5d6ff"Te6edf3$_paths_outputTa5d6ff"
Tffa657unset _paths_output
T8b949e# If feature.json pins an existing feature directory, branch naming is not required.
Tff7b72if ! feature_json_matches_feature_dir Ta5d6ff"Te6edf3$REPO_ROOTTa5d6ff" Ta5d6ff"Te6edf3$FEATURE_DIRTa5d6ff"Tb4b4b4; Tff7b72then
check_feature_branch Ta5d6ff"Te6edf3$CURRENT_BRANCHTa5d6ff" Ta5d6ff"Te6edf3$HAS_GITTa5d6ff" Tff7b72|| Tffa657exit T79c0ff1
Tff7b72fi
T8b949e# Ensure the feature directory exists
mkdir -p Ta5d6ff"Te6edf3$FEATURE_DIRTa5d6ff"
T8b949e# Copy plan template if it exists
Te6edf3TEMPLATETff7b72=Tff7b72$(resolve_template Ta5d6ff"plan-template" Ta5d6ff"Te6edf3$REPO_ROOTTa5d6ff"Tff7b72) Tff7b72|| Tffa657true
Tff7b72if Tff7b72[Tff7b72[ -n Ta5d6ff"Te6edf3$TEMPLATETa5d6ff" Tff7b72]Tff7b72] Tff7b72&& Tff7b72[Tff7b72[ -f Ta5d6ff"Te6edf3$TEMPLATETa5d6ff" Tff7b72]Tff7b72]Tb4b4b4; Tff7b72then
cp Ta5d6ff"Te6edf3$TEMPLATETa5d6ff" Ta5d6ff"Te6edf3$IMPL_PLANTa5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ffCopied plan template to Te6edf3$IMPL_PLANTa5d6ff"
Tff7b72else
Tffa657echo Ta5d6ff"Warning: Plan template not found"
T8b949e# Create a basic plan file if template doesn't exist
touch Ta5d6ff"Te6edf3$IMPL_PLANTa5d6ff"
Tff7b72fi
T8b949e# Output results
Tff7b72if Te6edf3$JSON_MODETb4b4b4; Tff7b72then
Tff7b72if has_jqTb4b4b4; Tff7b72then
jq -cn Tffea00\
--arg feature_spec Ta5d6ff"Te6edf3$FEATURE_SPECTa5d6ff" Tffea00\
--arg impl_plan Ta5d6ff"Te6edf3$IMPL_PLANTa5d6ff" Tffea00\
--arg specs_dir Ta5d6ff"Te6edf3$FEATURE_DIRTa5d6ff" Tffea00\
--arg branch Ta5d6ff"Te6edf3$CURRENT_BRANCHTa5d6ff" Tffea00\
--arg has_git Ta5d6ff"Te6edf3$HAS_GITTa5d6ff" Tffea00\
Ta5d6ff'{FEATURE_SPEC:$feature_spec,IMPL_PLAN:$impl_plan,SPECS_DIR:$specs_dir,BRANCH:$branch,HAS_GIT:$has_git}'
Tff7b72else
Tffa657printf Ta5d6ff'{"FEATURE_SPEC":"%s","IMPL_PLAN":"%s","SPECS_DIR":"%s","BRANCH":"%s","HAS_GIT":"%s"}\n' Tffea00\
Ta5d6ff"Tff7b72$(json_escape Ta5d6ff"Te6edf3$FEATURE_SPECTa5d6ff"Tff7b72)Ta5d6ff" Ta5d6ff"Tff7b72$(json_escape Ta5d6ff"Te6edf3$IMPL_PLANTa5d6ff"Tff7b72)Ta5d6ff" Ta5d6ff"Tff7b72$(json_escape Ta5d6ff"Te6edf3$FEATURE_DIRTa5d6ff"Tff7b72)Ta5d6ff" Ta5d6ff"Tff7b72$(json_escape Ta5d6ff"Te6edf3$CURRENT_BRANCHTa5d6ff"Tff7b72)Ta5d6ff" Ta5d6ff"Tff7b72$(json_escape Ta5d6ff"Te6edf3$HAS_GITTa5d6ff"Tff7b72)Ta5d6ff"
Tff7b72fi
Tff7b72else
Tffa657echo Ta5d6ff"Ta5d6ffFEATURE_SPEC: Te6edf3$FEATURE_SPECTa5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ffIMPL_PLAN: Te6edf3$IMPL_PLANTa5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ffSPECS_DIR: Te6edf3$FEATURE_DIRTa5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ffBRANCH: Te6edf3$CURRENT_BRANCHTa5d6ff"
Tffa657echo Ta5d6ff"Ta5d6ffHAS_GIT: Te6edf3$HAS_GITTa5d6ff"
Tff7b72fi
Served by rngit 1.5.2 - Generated in 0.03s